<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue事件修饰符</title>
    <style>
        .rect {display: flex;width: 400px;height: 200px;background-color: #e45757;}
        .blue {width: 100px;height: 100px;background: blue;}
    </style>
</head>
<body>
    <script src="/js/vue.js"></script>
    <div id="app">
        <!-- .stop修饰符阻止单击事件继续传播，即阻止事件冒泡行为。 -->
        <!-- 冒泡行为？连续触发事件叫做冒泡事件 -->
        <div @click="divClick">
            999
            <button @click.stop="btnClick">button</button>
        </div>

        <!-- 对某些DOM元素进行某种操作时，会出现一些默认行为，.prevent能够阻止事件默认行为。 -->
        <form action="baidu">
            <input type="submit" value="提交" @click.prevent="inputClick">
        </form>

        <!-- .self修饰符只监听触发该DOM元素的本身事件 -->
        <div class="rect" v-on:click.self="alertRed">
            <div class="blue" v-on:click="alertBlue">我是蓝色区域</div>
        </div>  

        <!-- .once修饰符，页面加载后只触发一次，可用于阻止事件多次触发行为。 -->
        <button @click.once="btnClick">button</button>

        <!-- 监听某个键帽 -->
        <input type="text" @keyup.enter="keyUp">
    </div>

    <script>
        let app = new Vue({
            el:"#app",
            data:{ 
                msg:'hello world'
            },
            methods:{
                divClick(){
                    console.log("divClick");
                },
                btnClick(){
                    console.log("btnClick");
                },
                inputClick(){
                    console.log(1);
                },
                alertRed(){
                    console.log("Red");
                },
                alertBlue(){
                    console.log("Blue");
                },
                keyUp(){
                    console.log("keyUp");
                }
            }
        })
    </script> 
</body>
</html>